package ar.com.arkios.kfcajitas;

import java.util.List;
import java.util.Observable;

/**
 * 
 */
public class LineaProduccion extends Observable {

    /** Plan de producción asociado a la línea de producción */
    private PlanProduccion miPlanProduccion;
    
    /** Cajas que se encuentran en la línea de producción */
    private List<Caja> cajas;
    
    public LineaProduccion() {
        iniciarLineaProduccion();
    }
    
    
    /**
     * Inicia la línea de producción activando las cajas asociadas a la misma.
     */
    public void iniciarLineaProduccion() {
        // Obtiene los datos de cada caja asociada a la línea de producción y
        // la crea disparando el thread de cada una.
        
        // 4D me tiene que pasar las cajas de la línea. El tipo de cada caja.
        // Y la IP de cada caja. Con esa info se puede crear cada caja e iniciar
        // su thread.
    }
    
    public PlanProduccion getMiPlanProduccion() {
        return miPlanProduccion;
    }
    
    /**
     * Desactiva la producción en la línea dejandola sin plan de producción activo.
     */
    public void desactivarPlanProduccion() {
        // ESTO TIENE QUE ESTAR SINCRONIZADO.
        this.miPlanProduccion = null;
        
        // Notifico a los observadores (las cajas de la línea) que no se tiene un
        // plan de producción activo.
        this.notifyObservers(miPlanProduccion);
    }
    
    /**
     * Activa el plan de producción inidicado sobre la línea actual. Esto 
     * implica que las cajas estarán validando contra el nuevo plan de 
     * producción.
     * 
     * @param planProduccion
     */
    public void activarPlanProduccion(PlanProduccion planProduccion) {
        this.miPlanProduccion = planProduccion;
        notifyObservers(this.miPlanProduccion);
    }
    
    public void pararLineaProduccion() {
        
    }
    
    public boolean tienePlanProduccion() {
        return this.miPlanProduccion != null;
    }
}
